package com.ee.chat.common.dao;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface BaseMapper {
    /**
     * 获取随机用户昵称
     * @Author Shane
     * @Date 2019/8/116:36
     * @param
     * @return
     **/
    String getRandomUserName();

    /**
     * 获取指定昵称的数量
     * @Author Shane
     * @Date 2020/7/10 13:52
     * @param
     * @return
     */
    int getUserNameCount(@Param("name") String name);

    /**
     * 获取随机用户头衔
     * @Author Shane
     * @Date 2019/8/116:37
     * @param
     * @return
     **/
    String getRandomUserIcon();

    /**
     * 获取指定头像的数量
     * @Author Shane
     * @Date 2020/7/10 13:53
     * @param
     * @return
     */
    int getUserIconCount(@Param("icon") String icon);

    /**
     * 批量保存用户排行数据
     * @Author Shane
     * @Date 2019/8/217:59
     * @param
     * @return
     **/
    int batchAddUserTop(@Param("tops") List<Map<String, Object>> tops);

    /**
     * 获取用户金币消费排行数据
     * @Author Shane
     * @Date 2019/8/2 22:42
     * @param way   榜单类型，0-神豪榜  1-魅力榜  2-神聊榜  3-勤奋榜
     * @param type  类型，0-天  1-周  2-月
     * @return
     */
    List<Map<String, Object>> getUserCoinConsumeTops(@Param("way") Integer way, @Param("type") Integer type);

    /**
     * 添加访问记录
     * @Author Shane
     * @Date 2019/8/910:41
     * @param userId    访问者id
     * @param toAccessUserId    被访问者id
     * @return
     **/
    int addUserAccessLog(@Param("userId") Integer userId, @Param("toAccessUserId") Integer toAccessUserId);

    /**
     * 查询指定日期的访问记录
     * @Author Shane
     * @Date 2020/5/23 13:19
     * @param
     * @return
     */
    Map<String, Object> selectUserAccessLog(@Param("userId") Integer userId, @Param("toAccessUserId") Integer toAccessUserId);

    /**
     * 更新访问记录
     * @Author Shane
     * @Date 2020/5/23 13:20
     * @param
     * @return
     */
    Map<String, Object> updateUserAccessLog(@Param("userId") Integer userId, @Param("toAccessUserId") Integer toAccessUserId);

    /**
     * 获取用户访问记录
     * @Author Shane
     * @Date 2019/8/911:41
     * @param 
     * @return
     **/
    IPage<Map<String, Object>> getUserAccessLogs(Page page, @Param("userId") Integer userId, @Param("type") Integer type);

    /**
     * 获取星座库
     * @Author Shane
     * @Date 2019/8/10 19:53
     * @param
     * @return
     */
    List<Map<String, Object>> getUSSLib();

    /**
     * 获取城市库
     * @Author Shane
     * @Date 2019/8/10 19:54
     * @param
     * @return
     */
    List<Map<String, Object>> getAreaLib(@Param("fatherAdCode") Integer fatherAdCode);

    /**
     * 获取职业库
     * @Author Shane
     * @Date 2020/4/1 17:40
     * @param
     * @return
     */
    List<Map<String, Object>> getProLib();

    /**
     * 获取情感库
     * @Author Shane
     * @Date 2020/4/1 17:40
     * @param
     * @return
     */
    List<Map<String, Object>> getEmLib();
}
